In the past, when a connection was routed through a node by a master node, the node would lock to preclude other master nodes from routing a connection through the node. The locking scheme allowed only one connection at a time to be routed through the node. This network routing technique prevented congestion from occurring at a via or slave node on the routing path. A node is a master when the node is a first node along a routing path. A node is a destination node or a slave node when it is the last node along a routing path. Nodes along the routing path which are neither master or slave are via nodes.
The locking approach prevented multiple master nodes from choosing a single via to route connections. This reduced the problem of message loss and congestion aggregation associated from messages arriving simultaneously at the via node from its links and congesting the via node. The locking approach also prevented multiple routing requests from being sent to a slave node from multiple directions. This reduced the problem of requiring a large message queue and extended CPU usage in processing resource request and resource confirmation messages.
There were, however, several drawbacks to this approach of network routing. First, because a node was only allowed to be used for routing one connection at a time, available bandwidth on trunks between the locked node and other nodes were not allocated. This was an inefficient use of bandwidth. Second, whenever the node locked out a connection from a master node, the master node would have to re-initialize its routing protocol. This required additional time and delay. Third, master nodes wishing to route a connection through a locked node would have to retry their connection routing after waiting a period of time. Upon retry, the master node may be locked out by the same connection or by a new connection established by another master node during the waiting period. The order in which attempts to route through the node was not used in prioritizing routing connections.